#include <stdio.h>
#include"main.h"
#include<malloc.h>


 int ListInitiate(LNode **head)
{
	*head=(LNode *)malloc(sizeof(LNode));
	(*head)->next=NULL;
	if(*head==NULL)
	return 1;
	else
	return 0; 
}


 int ListLength(LNode *head)
{
	LNode *p=head;
	int size=0;
	while(p->next!=NULL)
	{
		p=p->next;
		size++;
	}
	return size;
}

int ListInsert(LNode *head,int i,DataType x)
{
	LNode *p,*q;
	int j;
	p=head;
	j=-1;
	while(p->next!=NULL&&j<i-1)
	{
		p=p->next;
		j++;
	}
	if(j!=i-1)
	{
		printf("iֵ���Ϸ�");
		return 1;
	}
	q=(LNode *)malloc(sizeof(LNode));
	q->data=x;
	q->next=p->next;
	p->next=q;
	return 0; 
}

int  ListDelete(LNode *head,int i,DataType *x)
{
	LNode *p,*s;
	int j;
	p=head;
	j=-1;
	while(p->next!=NULL&&j<i-1)

	{
		p=p->next;
		j++;
	}
	if(j!=i-1)
	{
		printf("iֵ���Ϸ�");
		return 1;
	}
	s=p->next;
	*x=s->data;
	p->next=s->next;
	free(s);
	return 0; 
}

int ListGet(LNode *head,int i,DataType *x)
{
	LNode *p;
	int j;
	p=head;
	j=-1;
	while(p->next!=NULL&&j<i)
	{
		p=p->next;
		j++;
	}
	if(j!=i)
	{
		printf("iֵ���Ϸ�");
		return 1;
	}
	*x=p->data;
	return 0;
}

int Destroy(LNode **head)
{
	LNode *p,*p1;
	p=*head;
	while(p!=NULL)
	{
		p1=p;
		p=p->next;
		free(p1);
	}
	*head=NULL;
	return 0;
}

void main(void)
{
	LNode *head;
	int i,x;
	ListInitiate(&head);
	for(i=0;i<10;i++)
	{
		if(ListInsert(head,i,i+1)==0)
		{
			printf("����\n");
			return;
		}
	}
	if(ListDelete(head,4,&x)==0)
	{
		printf("����!\n");
		return;
	}
	for(i=0;i<ListLength(head);i++)
	{
		if(ListGet(head,i,&x)==0)
		{
			printf("����\n");
			return;
		}
		else
		printf("%d   ",x);
	}
	Destroy(&head);
} 